package Domain;

import org.joda.time.*;
import org.uqbar.commons.utils.Observable;

import Exceptions.IntervaloNoValidoException;

@Observable
public class Turno {
	// Precondición: Los Turnos no pueden ser menores a 4 horas
	// ni mayores a 8 horas
	// LocalDate fechaTurno;
	private LocalTime desde;
	private LocalTime hasta;
	// Interval desdeHasta;
	// NO SE SI ESTE OCUPADO HAGA FALTA
	boolean ocupado;

//	public Turno(LocalDate miFechaTurno, Interval miDesdeHasta) {
//		// this.fechaTurno = miFechaTurno;
//		this.desdeHasta = miDesdeHasta;
//		ocupado = false;
//	}

	// public Turno(Interval miDesdeHasta) throws IntervaloNoValidoException{
	// try{
	// if(miDesdeHasta.toDurationMillis() > 14400000 &&
	// miDesdeHasta.toDurationMillis() < 28800000){
	// this.desdeHasta = miDesdeHasta;
	// ocupado = false;
	// }
	// else{
	// throw new IntervaloNoValidoException();
	// }
	// } finally{
	//
	// }
	// }

	public Turno(LocalTime desde, LocalTime hasta)
			throws IntervaloNoValidoException {
		int per = hasta.getHourOfDay()-desde.getHourOfDay();
		if (per > 4 && per < 8) {
			this.setDesde(desde);
			this.setHasta(hasta);
		} else {
			throw new IntervaloNoValidoException();
		}
	}

	// ///////////ACCESORS///////////////////////////////////////////////////

	public LocalTime getDesde() {
		return this.desde;
	}

	public LocalTime getHasta() {
		return this.hasta;
	}

	public void setDesde(LocalTime desde) {
		this.desde = desde;

	}

	public void setHasta(LocalTime hasta) {
		this.hasta = hasta;

	}

	//
	// public Interval getDesdeHasta() {
	// return desdeHasta;
	// }
	//
	// public void setDesdeHasta(Interval desdeHasta) {
	// this.desdeHasta = desdeHasta;
	// }

	public boolean isOcupado() {
		return ocupado;
	}

	public void setOcupado(boolean ocupado) {
		this.ocupado = ocupado;
	}

	// public LocalDate getFechaTurno() {
	// return fechaTurno;
	// }
	//
	// public void setFechaTurno(LocalDate fechaTurno) {
	// this.fechaTurno = fechaTurno;
	// }

	// public Dia getDescripcionDeDisponibilidadRequerida() {
	// return Dia.getDiaPara(this.getDesdeHasta().getStart().getDayOfWeek());
	// }

}